磁盘配合其实就是给每个用户分配一定的磁盘额度,只允许他使用这个额度范围内的磁盘空间。在linux系统中,是多用户多任务的环境,所以会有很多人共用一个磁盘的情况。针对每个用户去限定一定量的磁盘空间是有必要的,这样才显得公平。随着硬件成本的降低,服务器上的磁盘资源似乎不再刻意的去限制了,所以磁盘配额也就可有可无了,但是也需要了解一下这部分内容,用到时必须会操作。
在linux中,用来管理磁盘配额的东西就是quota了。如果linux上没有quota,则需要安装这个软件包 quota-3.13-5.el5.RPM (其实版本是多少无所谓了,关键是这个软件包)。quota在实际应用中是针对整个分区进行限制的。比如,如果我们限制了/dev/sdb1这个分区,而/dev/sdb1 是挂载在/home 目录下的,那么/home 所有目录都会受到限制。
quota 这个模块主要分为quota 、quotacheck 、quotaoff 、quotaon 、quotastats 、edquota 、setquota 、warnquota 、repquota这几个命令,下面就分别介绍这些命令。
命令 : quota
“quota” 用来显示某个组或者某个使用者的限额。
语法:
|
|
基本参数
- -g 显示某个组的限额
- -u 显示某个用户的限额
- -v 显示的意思
- -s 选择inod或硬盘空间来显示
命令 : quotacheck
“quotacheck” 用来扫描某一个磁盘的quota空间。
语法:
|
|
基本参数
- -a 扫描所有已经mount的具有quota支持的磁盘
- -u 扫描某个使用者的文件以及目录
- -g 扫描某个组的文件以及目录
- -v 显示扫描过程
- -m 强制进行扫描
命令 : edquota
“edquota” 用来编辑某个用户或者组的quota值。
语法:
|
|
基本参数
- -u 编辑某个用户的quota
- -g 编辑某个组的quota
- -t 编辑宽限时间
- -p 拷贝某个用户或组的quota到另一个用户或组
当运行 edquota -u user
时,系统会打开一个文件,你会看到这个文件中有7列,它们分别代表的含义是:
- “Filesystem” 磁盘分区,如/dev/sdb5
- “blocks” 当前用户在当前的Filesystem中所占用的磁盘容量,单位是Kb。该值请不要修改。
- “soft/hard” 当前用户在该Filesystem内的quota值,soft指的是最低限额,可以超过这个值,但必须要在宽限时间内将磁盘容量降低到这个值以下。hard指的是最高限额,即不能超过这个值。当用户的磁盘使用量高于soft值时,系统会警告用户,提示其要在宽限时间内把使用空间降低到soft值之下。
- “inodes” 目前使用掉的inode的状态,不用修改。
命令 : quotaon
“quotaon” 用来启动quota,在编辑好quota后,需要启动才能是quota生效
语法:
|
|
基本参数
- -a 全部设定的quota启动
- -u 启动某个用户的quota
- -g 启动某个组的quota
- -s 显示相关信息
命令 : quotaoff
“quotaoff” 用来关闭quota, 该命令常用只有一种情况 quotaoff -a 关闭全部的quota.
以上讲了很多quota的相关命令,那么接下来阿铭教你如何在实践应用中去做这个磁盘配额。整个执行过程如下:
首先先确认一下,/home目录是不是单独的挂载在一个分区下,用df 查看即可。
|
|
上例linux系统中,/home并没有单独占用一个分区。所以需要把/home目录挂载在一个单独的分区下,因为quota是针对分区来限额的。下面把 /dev/sdb5 挂载到/home 目录下, 编辑 /etc/fstab 把刚才添加的那行修改为:
|
|
保存 /etc/fstab 后,运行 mount -a 命令挂载全部的分区。
|
|
此时的 /home 为一个单独分区了。
- 建立测试账户
首先建立一个test用户,则同时建立了一个test组。其中uid和gid都为511 ,然后又建立一个test1账号,使其加入test组,查看/etc/passwd文件发现test和test1用户的gid都为511.
|
|
- 打开磁盘的quota功能
默认linux并没有对任何分区做quota的支持,所以需要我们手动打开磁盘的quota功能,你是否记得,在前面内容中分析/etc/fstab文件的第四列时讲过这个quota选项(usrquota, grpquota),没错,要想打开这个磁盘的quota支持就是需要修改这个第四列的。用vi编辑/etc/fstab 编辑刚才加的那一行,如下:
|
|
保存 /etc/fstab 后,重新挂载/home分区。
|
|
使用 mount 命令可以查看到 /home 分区已经加上了 “usrquota,grpquota” 两个配额相关的参数。
- 扫描磁盘的使用者使用状况,并产生重要的aquota.group与aquota.user
这一步就需要用到quotacheck了,aquota.group与aqouta.user分别是组以及用户磁盘配额需要的配置文件。如果没有这两个文件,则磁盘配额是不会生效的。
|
|
可能会有一些错误信息,不要管它。看一看/home分区下是否多了两个文件(aquota.group, aquota.user)
|
|
如果有了,则可以进入下一步了。
- 启动quota配额
|
|
- 编辑用户磁盘配额
先来设定test账户的配额,然后直接把test的配额拷贝给test1即可。这里就需要用到edquota了。
|
|
将下面内容
|
|
修改为:
|
|
其中单位是Kb,所以soft 值大约为20Mb,hard值为30Mb,保存这个文件,保存的方式跟vi一个文件的方式一样的。下面将test的配额复制给test1.
|
|
下面继续设定宽限时间:
|
|
将7days 改为 1days
|
|
下面查看一下test以及test1用户的配额吧。
|
|
- 编辑组磁盘配额
|
|
修改为:
|
|
设定组test的soft配额值为40M,hard值为50M。下面查看组test的配额。
|
|
- 设定开机启动
前面已经讲到启动磁盘配额的命令是 quotaon -aug 所以要想开机启动,只需将这条命令加入到 /etc/rc.d/rc.local文件即可。
|
|